package model;

import java.util.ArrayList;

import view.ComodidadDTO;
import view.HabitacionDTO;
import view.HotelDTO;
import view.ImagenHotelDTO;

public class Hotel {
	private Integer id;
	private String codigo;
	private String nombre;
	private Destino destino;
	private String domicilio;
	private String codigoPostal;
	private Boolean activo;
	private Integer categoria;
	private Integer calificacionInterna;
	private String cadena;
	private String telefono;
	private String email;
	private String web;
	private String descripcion;
	private ArrayList<ImagenHotel> imagenes;
	private ArrayList<Comodidad> comodidades;
	private ArrayList<Habitacion> habitaciones;
	
	public Hotel(Integer id, String codigo, String nombre, Destino destino,
			String domicilio, String codigoPostal, Boolean activo,
			Integer categoria, Integer calificacionInterna, String cadena,
			String telefono, String email, String web, String descripcion,
			ArrayList<ImagenHotel> imagenes, ArrayList<Comodidad> comodidades,
			ArrayList<Habitacion> habitaciones) {
		super();
		this.id = id;
		this.codigo = codigo;
		this.nombre = nombre;
		this.destino = destino;
		this.domicilio = domicilio;
		this.codigoPostal = codigoPostal;
		this.activo = activo;
		this.categoria = categoria;
		this.calificacionInterna = calificacionInterna;
		this.cadena = cadena;
		this.telefono = telefono;
		this.email = email;
		this.web = web;
		this.descripcion = descripcion;
		this.imagenes = imagenes;
		this.comodidades = comodidades;
		this.habitaciones = habitaciones;
	}
	public Hotel(Integer id, String codigo, String nombre, Destino destino,
			String domicilio, String codigoPostal, Boolean activo,
			Integer categoria, Integer calificacionInterna, String cadena,
			String telefono, String email, String web, String descripcion) {
		super();
		this.id = id;
		this.codigo = codigo;
		this.nombre = nombre;
		this.destino = destino;
		this.domicilio = domicilio;
		this.codigoPostal = codigoPostal;
		this.activo = activo;
		this.categoria = categoria;
		this.calificacionInterna = calificacionInterna;
		this.cadena = cadena;
		this.telefono = telefono;
		this.email = email;
		this.web = web;
		this.descripcion = descripcion;
	}
	public Hotel(HotelDTO hotel) {
		super();
		this.id = hotel.getId();
		this.codigo = hotel.getCodigo();
		this.nombre = hotel.getNombre();
		this.destino = new Destino(hotel.getDestino());
		this.domicilio = hotel.getDomicilio();
		this.codigoPostal = hotel.getCodigoPostal();
		this.activo = hotel.estaActivo();
		this.categoria = hotel.getCategoria();
		this.calificacionInterna = hotel.getCategoriaInterna();
		this.cadena = hotel.getCadena();
		this.telefono = hotel.getTelefono();
		this.email = hotel.getEmail();
		this.web = hotel.getWeb();
		this.descripcion = hotel.getDescripcion();
		this.imagenes = new ArrayList<ImagenHotel>();
		this.comodidades = new ArrayList<Comodidad>();		
		
		for(ComodidadDTO com : hotel.getComodidades())
		{
			this.comodidades.add(new Comodidad(com));
		}
		
		this.habitaciones = new ArrayList<Habitacion>();
		for(HabitacionDTO hab : hotel.getHabitaciones())
		{
			this.habitaciones.add(new Habitacion(hab));
		}
	}	
	public Integer getId() {
		return this.id;
	}
	
	public String getCodigo() {
		return this.codigo;
	}
	
	public String getNombre() {
		return this.nombre;
	}
	
	public Destino getDestino() {
		return this.destino;
	}
	
	public String getDomicilio() {
		return this.domicilio;
	}
	
	public String getCodigoPostal() {
		return this.codigoPostal;
	}
	
	public Boolean estaActivo() {
		return this.activo;
	}
	
	public Integer getCategoria() {
		return this.categoria;
	}
	
	public Integer getCategoriaInterna() {
		return this.calificacionInterna;
	}
	
	public String getCadena() {
		return this.cadena;
	}
	
	public String getTelefono() {
		return this.telefono;
	}
	
	public String getEmail() {
		return this.email;
	}
	
	public String getWeb() {
		return this.web;
	}
	
	public String getDescripcion() {
		return this.descripcion;
	}
	
	public ArrayList<ImagenHotel> getImagenes() {
		this.imagenes.add(new ImagenHotel(0, "images.jpg"));
		return this.imagenes;
	}
	
	public ArrayList<Comodidad> getComodidades() {
		return this.comodidades;
	}
	
	public ArrayList<Habitacion> getHabitaciones() {
		return this.habitaciones;
	}
	
	public void setId(int id) {
		this.id=id;
	}
	
	public HotelDTO toDTO() {
		ArrayList<HabitacionDTO> habs = new ArrayList<HabitacionDTO>();		
		for(Habitacion hab : this.habitaciones)
		{
			habs.add(hab.toDTO());
		}
		ArrayList<ComodidadDTO> coms = new ArrayList<ComodidadDTO>();
		for(Comodidad com : this.comodidades)
		{
			coms.add(com.toDTO());
		}
		ArrayList<ImagenHotelDTO> imgs = new ArrayList<ImagenHotelDTO>();
		for(ImagenHotel img : this.imagenes)
		{
			imgs.add(img.toDTO());
		}
		HotelDTO hot = new HotelDTO(this.id
				, this.codigo
				, this.nombre
				, this.destino.toDTO()
				, this.domicilio
				, this.codigoPostal
				, this.estaActivo()
				, this.categoria
				, this.calificacionInterna
				, this.cadena
				, this.telefono
				, this.email
				, this.web
				, this.descripcion
				, imgs
				, coms
				, habs);
		return hot;
	
	}
	
	public void eliminar() {
	
	}
}
